﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Xylee.Common
{
    /// <summary>
    /// This is the base interface for 
    /// defining concrete command pattern 
    /// actions throughout application 
    /// development. This class can be used
    /// in any context and requires no extra code.
    /// </summary>
    public interface ICommand
    {
        void Execute();
    }

    /// <summary>
    /// This is an implementation for managing commands 
    /// that are also undoable. This means that any command 
    /// that implements this interface can undo the actions 
    /// that may occur once the command has been executed.
    /// This will require state management through persistence 
    /// or any other method of managing state.
    /// </summary>
    public interface IUndoableCommand : ICommand
    {
        void Undo();
    }
}
